package com.sword.service.impl.system;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sword.constant.MessageConstant;
import com.sword.mapper.system.DeptMapper;
import com.sword.page.PageResult;
import com.sword.page.QueryPageBean;
import com.sword.pojo.system.Dept;
import com.sword.service.impl.BasicBaseServiceImpl;
import com.sword.service.system.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.lang.reflect.Field;
import java.util.List;

@Service
public class DeptServiceImpl extends BasicBaseServiceImpl<Dept> implements DeptService {
//    @Override
//    public PageResult queryDept(QueryPageBean queryPageBean) {
//        QueryWrapper<Dept> wrapper = new QueryWrapper<>();
//
//        IPage<Dept> iPage = super.queryPageList(wrapper, queryPageBean.getPage(), queryPageBean.getLimit());
//
//        return new PageResult(0, MessageConstant.QUERY_DEPT_SUCCESS, iPage.getTotal(), iPage.getRecords());
//    }
//
//    @Override
//    public PageResult queryDeptLike(QueryPageBean queryPageBean) {
//        QueryWrapper<Dept> wrapper = new QueryWrapper<>();
//        Dept dept = new Dept();
//        Field[] fields = dept.getClass().getDeclaredFields();
//        for (int i = 0; i < fields.length; i++) {
//            //有的字段是用private修饰的 将他设置为可读
//            fields[i].setAccessible(true);
//            wrapper.like(fields[i].getName(),queryPageBean.getQueryString()).or();
//        }
//        IPage<Dept> iPage = super.queryPageList(wrapper, queryPageBean.getPage(), queryPageBean.getLimit());
//
//        return new PageResult(0, MessageConstant.QUERY_DEPT_SUCCESS, iPage.getTotal(), iPage.getRecords());
//    }
//
//    @Override
//    public Integer addDept(Dept dept) {
//        return super.save(dept);
//    }
//
//    @Override
//    public Integer editDept(Dept dept) {
//        return super.update(dept);
//    }
//
//    @Override
//    public Integer deleteDept(Integer id) {
//        return super.deleteById(Long.valueOf(id));
//    }
    @Autowired
DeptMapper deptMapper;


    @Override
    public Integer addDept(String deptid, String Deptname, String remark) {
        Dept dept = new Dept(deptid, Deptname,remark);
        Integer result = deptMapper.insert(dept);
        return result;
    }

    @Override
    public Integer deleteDept(Integer id) {
        Integer result = deptMapper.deleteById(id);
        return result;
    }

    @Override
    public Integer deleteDepts(List<Integer> id) {
        Integer result = deptMapper.deleteBatchIds(id);
        return result;
    }

    @Override
    public Integer modifyDept(Integer id,String deptid, String Deptname, String remark) {
        Dept dept = new Dept(id,deptid, Deptname, remark);
        Integer result = deptMapper.updateById(dept);
        return result;
    }

    @Override
    public List<Dept> queryAll() {
        QueryWrapper<Dept> wrapper = new QueryWrapper<>();
        wrapper.isNotNull("id");
        List<Dept> depts = deptMapper.selectList(wrapper);
        return depts;
    }

    @Override
    public Dept queryDeptById(String id) {
        QueryWrapper<Dept> wrapper = new QueryWrapper<>();
        wrapper.eq("deptid",id);
        Dept dept = deptMapper.selectOne(wrapper);
        return dept;
    }

    @Override
    public List<Dept> queryDeptLike(String word) {
        QueryWrapper<Dept> wrapper = new QueryWrapper<>();
        wrapper

                .like("deptid",word).or()
                .like("Dept_Name",word).or()
                .like("Remark",word);
        List<Dept> depts = deptMapper.selectList(wrapper);
        return depts;
    }
}
